1. Technical Field
The present application relates generally to an improved data processing system and method. More specifically, the present application is directed to an apparatus and method for verifying the alignment of data for programming a bank of electrically programmable fuses (eFuses).
2. Description of Related Art
An electrically programmable fuse (eFuse) is a simple circuit element that has one of two different states: blown or unblown. As is generally known in the art, the writing of data to eFuses involves the blowing of eFuses to represent a “1” and the leaving of eFuses in their default state, i.e. unblown, to represent a “0” value. In the unblown state, the eFuse enables an electrical contact while in the blown state, the electrical contact is severed. However, the opposite approach may be taken in the case of, for example, inverse eFuses in which blowing of the eFuse actually enables an electrical contact thereby representing a “0” with the default state representing a “1.”
Many integrated circuit chips available from International Business Machines, Inc., already include one or more banks of eFuses that are used to provide a self-repair ability to the integrated circuit chip. With eFuses, if an imperfection is detected in the integrated circuit, the appropriate eFuses are tripped, i.e. blown. The activated fuses help the chip control individual circuit speed to manage power consumption and repair unexpected, and potentially costly, flaws. If the technology detects that the chip is malfunctioning because individual circuits are running too fast or too slow, it can “throttle down” these circuits or speed them up by controlling appropriate local voltage. The eFuses are provided in the integrated circuit chips with little if any additional cost to the integrated circuit chips.
FIG. 1 is a diagram of an eFuse in accordance with a known structure. As shown in FIG. 1, the eFuse element 100 consists of several components including a polysilicon fuse 110, a fuse latch 120, a program latch 130, a program field effect transistor (FET) 140, and a look-ahead programming multiplexer 150. The first, and primary component is the polysilicon fuse 110. The fuse 110 has two possible logic states. In the depicted example, it can remain intact where its value is evaluated as a logical “zero.” The other state is “programmed” and evaluates to a logical “one.” A DC current pulse of approximately 10 mA in amplitude and duration of 200 μsec is required to program the fuse 110. This high current programs the fuse 110 by dynamically increasing the resistance of the polysilicon link.
A fuse latch 120 is associated with each fuse 110. The fuse latch 120 serves three functions: (1) during fuse programming, all fuse latches 120 are initialized to a logical “zero,” and then a single logical “one” is shifted through, providing a sequence enabling mechanism to determine when to program each fuse 110; (2) when reading the fuse values, the fuse latch 120 is used to sense and store the fuse value; and (3) the fuse latch has an additional data port, used to create a daisy chain between all fuses, which permits serial access to all fuses. Because of the high DC current requirements required to program a single fuse, a logical “one” is shifted through a field of zeros using the daisy chained state latches in order to program one fuse at a time.
The remaining components of the eFuse 100 are functional only when programming the fuse 110. The desired state of the fuse is shifted into the program latch 130. When a program latch 130 is loaded with a logical “one,” it selects the program FET 140 and also disables the look-ahead programming multiplexer 150. The look-ahead programming multiplexer 150 causes the fuse latch's shifted “one” to skip over fuses which are not selected for programming, thereby saving fuse programming time.
For programming to occur, the EFuseProg signal is enabled and a high voltage is places across the fuse 110 using the FSource input and the resulting current is sunk through the program FET 140. Only when this high current path is enabled can the fuse be programmed. The program FET 140 is enabled when the program latch 130 is set and the shifted “one” arrives at the fuse latch 120. For more information regarding eFuses and the use of eFuses to perform on-chip repair, reference is made to Cowan et al., “On-Chip Repair and an ATE Independent Fusing Methodology,” ITC International Test Conference, IEEE 2002, pages 178-186, which is hereby incorporated by reference.
As can be seen from the above eFuse description, once an eFuse is programmed, in general it cannot be re-programmed. Thus, it is extremely important to ensure that the data that is used to program a bank of eFuses is the correct data before programming the bank of eFuses. With current circuitry, it is possible that when data is being shifted into the program latches of the bank of eFuses, that one or more data values may be shifted improperly due to timing differences in circuit elements. As a result, the data in the program latches may be misaligned.
If the data is misaligned, then incorrect data will be programmed into the bank of eFuses. Since the eFuses cannot be re-programmed, such an error may cause the integrated circuit device in which the bank of eFuses is situated to not function properly. Furthermore, it may be quite costly to attempt to repair the integrated circuit device or such repair may not even be possible and the integrated circuit device must be discarded.